package com.br.negocio.vo;


import java.io.Serializable;
import java.util.Date;

import javax.persistence.Column;
import javax.persistence.FetchType;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.MappedSuperclass;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

import org.hibernate.annotations.Fetch;
import org.hibernate.annotations.FetchMode;

@MappedSuperclass
public class ContaVO implements Serializable{
        
        private static final long serialVersionUID = 1L;
        
        @Column(name = "descricao", nullable=true, length=80 )
        private String descricao;
        
        @Column(name = "valor", nullable=false, length=15)
        private float valor;
        
        @Column(name = "multa", nullable=true, length=15)
        private float multa;            
        
        @Column(name = "juros", nullable=true, length=15)
        private float juros;    
        
        @Column(name = "desconto", nullable=true, length=15)
        private float desconto; 
                
        @Temporal(TemporalType.TIMESTAMP)
        @Column (name = "dt_emissao", nullable=false )
        private Date dataEmissao;
        
        @Temporal(TemporalType.TIMESTAMP)
        @Column (name = "dt_cancelamento", nullable=true)
        private Date dataCancelamento;  
        
        @Temporal(TemporalType.TIMESTAMP)
        @Column (name = "dt_vencimento", nullable=false)
        private Date dataVencimento;

        @ManyToOne(fetch = FetchType.EAGER)
        @JoinColumn(name = "cod_forma_pagamento", nullable=false)
        @Fetch(FetchMode.JOIN)
        private FormaPagamentoVO formaPagamentoVO;


        public String getDescricao() {
                return descricao;
        }

        public void setDescricao(String descricao) {
                this.descricao = descricao;
        }

        public float getValor() {
                return valor;
        }

        public void setValor(float valor) {
                this.valor = valor;
        }

        public float getMulta() {
                return multa;
        }

        public void setMulta(float multa) {
                this.multa = multa;
        }

        public float getJuros() {
                return juros;
        }

        public void setJuros(float juros) {
                this.juros = juros;
        }

        public Date getDataEmissao() {
                return dataEmissao;
        }

        public void setDataEmissao(Date dataEmissao) {
                this.dataEmissao = dataEmissao;
        }

        public Date getDataVencimento() {
                return dataVencimento;
        }

        public void setDataVencimento(Date dataVencimento) {
                this.dataVencimento = dataVencimento;
        }

        public FormaPagamentoVO getFormaPagamentoVO() {
                return formaPagamentoVO;
        }

        public void setFormaPagamentoVO(FormaPagamentoVO formaPagamentoVO) {
                this.formaPagamentoVO = formaPagamentoVO;
        }

        public Date getDataCancelamento() {
                return dataCancelamento;
        }

        public void setDataCancelamento(Date dataCancelamento) {
                this.dataCancelamento = dataCancelamento;
        }

        public float getDesconto() {
                return desconto;
        }

        public void setDesconto(float desconto) {
                this.desconto = desconto;
        }

}

